// 测试商品添加功能
const axios = require('axios');
const fs = require('fs');
const path = require('path');

// 商品测试数据
const testGoodsData = {
  title: '测试商品',
  description: '这是一个测试商品描述',
  price: 99.99,
  image: '/pages/tabBar/home.png',
  tag: '测试',
  details: '这是测试商品的详细介绍内容',
  specifications: [
    { name: '测试规格1', value: '测试值1' },
    { name: '测试规格2', value: '测试值2' }
  ]
};

// 先登录获取token
async function loginAdmin() {
  try {
    const loginResponse = await axios.post('http://localhost:3000/api/admin/login', {
      username: 'admin', // 默认管理员用户名
      password: 'admin123' // 默认管理员密码
    });
    
    if (loginResponse.data.success) {
      console.log('管理员登录成功，获取到token');
      return loginResponse.data.token;  // token在响应对象顶层
    } else {
      console.error('管理员登录失败:', loginResponse.data.message);
      return null;
    }
  } catch (error) {
    console.error('登录请求失败:', error.message);
    return null;
  }
}

// 测试添加商品
async function testAddGoods() {
  // 先尝试直接连接数据库测试
  console.log('=== 开始测试商品添加功能 ===');
  
  try {
    // 测试服务器是否运行正常
    const testResponse = await axios.get('http://localhost:3000/api/test');
    console.log('服务器状态:', testResponse.data.message);
  } catch (error) {
    console.error('服务器未启动或无法访问:', error.message);
    return;
  }
  
  // 获取管理员token
  const token = await loginAdmin();
  if (!token) {
    console.error('无法获取管理员token，测试终止');
    return;
  }
  
  // 尝试添加商品
  try {
    const response = await axios.post('http://localhost:3000/api/admin/goods', testGoodsData, {
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      }
    });
    
    if (response.data.success) {
      console.log('✅ 商品添加成功!');
      console.log('新创建的商品:', response.data.data);
      
      // 保存测试结果到文件
      const result = {
        success: true,
        timestamp: new Date().toISOString(),
        data: response.data.data
      };
      fs.writeFileSync(path.join(__dirname, 'test_add_goods_result.json'), JSON.stringify(result, null, 2));
    } else {
      console.error('❌ 商品添加失败:', response.data.message);
      
      // 保存错误结果
      const result = {
        success: false,
        timestamp: new Date().toISOString(),
        message: response.data.message
      };
      fs.writeFileSync(path.join(__dirname, 'test_add_goods_result.json'), JSON.stringify(result, null, 2));
    }
  } catch (error) {
    console.error('❌ 请求失败:', error.message);
    if (error.response) {
      console.error('错误详情:', error.response.data);
      
      // 保存错误结果
      const result = {
        success: false,
        timestamp: new Date().toISOString(),
        error: error.message,
        response: error.response.data
      };
      fs.writeFileSync(path.join(__dirname, 'test_add_goods_result.json'), JSON.stringify(result, null, 2));
    }
  }
  
  console.log('=== 测试完成 ===');
}

// 运行测试
testAddGoods();